package com.wn.sms;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

/**
 * @author yellow Docter
 * @date 2023 -07-21
 * @desc
 */
@ComponentScan({"com.wn.sms","com.wn.common"})
@SpringBootApplication
public class SmsApplication {

    /**
     * 短信发送的工具类的封装
     *      方法的封装
     *      xxxUtils的封装
     *      模板的封装
     *         JdbcTemplate  jdbcTemplate   jdbc的封装
     *         RedisTemplate redisTemplate  redis封装
     *         SmsTemplate   smsTemplate    sms的封装
     *
     *  研究: RedisTemplate 的封装(不研究 方法)  自动装配
     *  1、 RedisTemplate 如何初始化 如何添加到ioc容器中   ?
     *     1、springboot 启动后如何加载  RedisTemplate
     *           1、@ SpringBootApplication 符合注解 中、开启自动注解 @EnableAutoConfiguration
     *                   @Import(AutoConfigurationImportSelector.class)
     *                   会去加载  AutoConfigurationImportSelector类 这个类中 会加载
     *                   List<String> getCandidateConfigurations 方法中会加载spring.factory 文件
     *                   加载文件中的这个类： org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
     *
     *     2、初始化 （RedisAutoConfiguration 这个类在做什么 ）
     *       @EnableConfigurationProperties(RedisProperties.class)   // 读取yml中的配置文件
     *       public class RedisAutoConfiguration {
     *              //创建对象 添加到ioc容器中
                    @Bean
                    @ConditionalOnMissingBean(name = "redisTemplate")
                    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
                            throws UnknownHostException {
                        RedisTemplate<Object, Object> template = new RedisTemplate<>();
                        template.setConnectionFactory(redisConnectionFactory);
                    return template;
               }
     *    }
     */
    RedisAutoConfiguration redisAutoConfiguration;
    public static void main(String[] args) {

        SpringApplication.run(SmsApplication.class,args);

    }

}
